let utils = data.utils,
  STUtil = data.STUtil,
  Node = data.Node,
  SplayTree = data.SplayTree,
  isInBbox = data.isInBbox,
  getBboxOverlap = data.getBboxOverlap,
  cmp = data.cmp,
  rounder = data.rounder,
  geomIn = data.geomIn,
  geomOut = data.geomOut,
  operation = data.operation,
  Segment = data.Segment,
  SweepEvent = data.SweepEvent,
  SweepLine = data.SweepLine,
  polygonClipping = data.polygonClipping;
console.log("16DynamicLabel01_1");

function DynamicLabel(options) { }
utils.extend(DynamicLabel.prototype, {
  getExtent: function (currentCenterLng, currentCenterLat, zoom, width, height) {
    function scale(a) {
      return 256 * Math.pow(2, a)
    }

    function px2lonlat(mapWidth, mapHeight, centerX, centerY, zoom, targetX, targetY) {
      var result = {
        x: 0,
        y: 0
      },
        worldWidth, resoultion66 = 40075016.68 / scale(zoom),
        centerMec = lonLat2Mercator(centerX, centerY),
        centerPX, centerPY, dx = (targetX - mapWidth / 2) * resoultion66,
        dy = (targetY - mapHeight / 2) * resoultion66,
        targetLonlat = Mercator2lonLat(centerMec[0] + dx, centerMec[1] - dy);
      return result.x = targetLonlat[0], result.y = targetLonlat[1], result
    }

    function lonLat2Mercator(lon, lat) {
      var x = 20037508.34 * lon / 180,
        y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180);
      return [x, y = 20037508.34 * y / 180]
    }

    function Mercator2lonLat(x, y) {
      var lon, lat = y / 20037508.34 * 180;
      return [x / 20037508.34 * 180, lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2)]
    }
    var minXY = px2lonlat(width, height, currentCenterLng, currentCenterLat, zoom, 0, height),
      maxXY = px2lonlat(width, height, currentCenterLng, currentCenterLat, zoom, width, 0),
      extent;
    return [minXY.x, minXY.y, maxXY.x, maxXY.y]
  },
  getGeom: function (geojson) {
    return "Feature" === geojson.type ? geojson.geometry : geojson
  },
  intersect: function (poly1, poly2, options = {}) {
    const geom1 = this.getGeom(poly1),
      geom2 = this.getGeom(poly2),
      intersection = polygonClipping.intersection(geom1.coordinates, geom2.coordinates);
    return 0 === intersection.length ? null : 1 === intersection.length ? {
      type: "Feature",
      properties: options.properties,
      geometry: {
        type: "Polygon",
        coordinates: intersection[0]
      }
    } : {
        type: "Feature",
        properties: options.properties,
        geometry: {
          type: "MultiPolygon",
          coordinates: intersection
        }
      }
  }
});

var res6 = {
  utils: utils,
  STUtil: STUtil,
  Node: Node,
  SplayTree: SplayTree,
  isInBbox: isInBbox,
  getBboxOverlap: getBboxOverlap,
  cmp: cmp,
  rounder: rounder,
  geomIn: geomIn,
  geomOut: geomOut,
  operation: operation,
  Segment: Segment,
  SweepEvent: SweepEvent,
  SweepLine: SweepLine,
  polygonClipping: polygonClipping,
  DynamicLabel: DynamicLabel
};
return res6